Chapter 6 describes additions and clarifications to the ABI library specifications. Facilities in these libraries manipulate system data files, trap to the operating system, and so on. The routines described here are corrections or omissions from the base documents, or additions specific to the MIPS ABI environment. The following areas are defined:
libc The C library, containing various facilities defined by System V, ANSI C, POSIX, and so on. It contains interfaces to basic system services. Some special cases are covered in detail: mmap Reserved range for MMAP_FIXED sysinfo MIPS ABI specific additions mtio Tape Manipulation ioctl Calls libdl The dynamic linking library, containing routines that give the user direct access to the dynamic linking facilities. libnsl The networking services library, containing the transport layer interface routines, as well as routines for machine independent data representation (XDR), remote procedure calls (RPC) and other networking support. libmutex Routines allowing programs to access fast mutual exclusion features. libsocket Routines providing an interface to Berkeley Software Distribution (BSD) networking facilities based on the socket model. libabi A library containing assorted routines which are additions to the base ABI documents. For the current release of this specification, if contains only the Asynchronous I/O Interfaces from POSIX 1003.1b. libX A library for building applications using the X Window System, Version 11 protocol.
While not all ABI-conforming systems provide a complete ABI development environment, all are required to have the ability to link ABI-conforming objects together with locally produced objects to produce a localized binary. The actual environment to link ABI objects into a localized binary may be an optional package. Certain additional interfaces are provided for the use of ABI conforming programs in the form of of static archives which are required to be present if the the ability to link ABI objects is installed on a platform.
libm Math Library libXm OSF/Motif Library libgen General-Purpose Library libucb BSD Emulation Library
Library Reference Name ----------+---------------------- libc | /usr/lib/libc.so.1 libnsl | /usr/lib/libnsl.so libX | /usr/lib/libX11.so.2 libmutex | /usr/lib/libmutex.so libdl | /usr/lib/libdl.so libsocket | /usr/lib/libsocket.so libabi | /usr/lib/libabi.so.1
The System Library, libsys
, as described in the
generic ABI Chapter 6, has been removed from the MIPS ABI.
Originally, libsys
will not necessarily exist as a separate library
on ABI conforming systems. Thus, /usr/lib/ld.so.1
is
not required. As described in the generic ABI, all libsys
symbols are present in libc
.
libc
, contains all the symbols
listed in the generic ABI and MIPS processor specific ABI,
as well as the symbols described in the following sections.
libc
library to provide entry points for the required source-
level interfaces listed in the generic ABI. A description
and syntax summary for each function follows the table.
fstat
,
lstat
, stat
, mknod
and uname
.
stat
family and
mknod
in <sys/stat.h>
, and for
uname
in <sys/utsname.h>
.
Applications, in turn, must include those files to get the
ABI-specified behavior, otherwise the older interfaces
(those extant before the Expansion of Fundamental Types (or
EFT)) may erroneously be included.
int _fxstat(const int, int, struct stat *);
fstat
(BA_OS)
function describes in the System V Interface Definition,
Third Edtions (SVID 3). Its only difference
is that it requires an extra first argument whose value must
be 2.
int _lxstat(const int, const char *, struct stat *);
lstat (BA_OS)
function described in the SVID 3. Its
only difference is that it requires an extra first argument
whose value must be 2.
int _xstat(const int, const char *, struct stat *);
stat (BA_OS)
function described in the SVID 3.
Its only difference is that it requires an extra first argument whose
value must be 2.
int _xmknod(const int, const char *, mode_t, dev_t);
mknod (BA_OS)
function described in the SVID 3.
Its only difference is that it requires an extra first argument
whose value must be 2.
int nuname(struct utsname *);
uname (BA_OS)
function described in the SVID 3.
The symbol _nuname
is
also available with the same semantics.
libc
Contents, Names without Synonyms
libc
Contents, Names with Synonyms
Note that the following routines are listed in the generic ABI as Names without Synonyms.
libc
Contents, Names with Synonyms,
void *sbrk(int incr)
sbrk
function is used
to grow or shrink the area of a process which can be used
for data storage. If incr is positive, it will grow the area, if
negative, it will shrink it. If the data area is expanded
past the maximum previous size, the new area will be
initialized to zero, but the contents of any space which had
been previously allocated will be undefined.
sbrk
returns a pointer to the previous end of
the data area or -1 if it was unable to change the size as
requested. If -1 is returned, the data storage area will remain
the previous size and errno
will be set to one of the following:
ENOMEM
EAGAIN
int setegid (gid_t group)
int seteuid (uid_t user)
seteuid
and
setegid
set the effective user ID and group ID
of the current process.
If the effective user ID of the calling process is not
super-user, but if its real user (group) ID is equal to
uid (gid), or if the saved set-user (group) ID from
execve
is equal to uid (gid), then the effective
user (group) ID is set to uid (gid).
These functions return 0 on success, -1 on failure and set
errno
to indicate the error.
long sysinfo (int command, char *buf, long count)
sysinfo
copies information relating to
the system on which the process is executing into the buffer
pointed to by Upon successful completion, the value returned
indicates the buffer size in bytes required to hold the
complete value and the terminating null character. If this
value is no greater than the value passed in count, the entire
string was copied; if this value is greater than the string
copied into has been truncated to count-1 bytes plus a terminating
null character.
Otherwise, a value of -1 is returns and errno is set to indicate the
error. sysinfo
can be called with a count of
0
to determine the required buffer size.
Alternatively, a reasonable guess for count is 256, which is
likely to cover all strings returned by this interface in
typical installations.
gettimeofday
differs from the
BSD4.3 version.mmap
Routine
A group of programs may need to specify the address of
shared memory and mapped file regions in order to use the
same addresses to access these regions. The address range
from 0x30000000
to 0x3fff0000
is
reserved for this purpose; additional contiguous
space above this range is recommended and may be supported.
A MIPS ABI conforming system guarantees that shared memory
and mapped file regions placed by the system will not fall
in this range.
The placement of a shared memory or mapped file region by a program must follow these rules:
0x30000000-0x3fff0000
.
For example, if a program wants to create a 0x3000
-byte shared memory
region and map a file with an offset of 0x2000
and length of 0x1000
, both
regions will have fixed addresses. One possible placement
of these regions puts the shared memory region at [0x300000000,
0x30002fff]
and [0x30042000, 0x30042fff]
.
MAP_FIXED
is used in flags). As noted in the documentation for
mmap
, the use of MAP_FIXED
is discouraged for general use.
mmap
'ed object
mmap
cannot be used to extend the size of a file.
SIGBUS
signal.
sysinfo
Routinesysinfo
. The new and recommended routines are described
below, along with examples. A sysinfo
header file,
including the additional commands, follows. See vendor
release notes for vendor values.
_MIPS_SI_VENDOR
Example: Silicon Graphics, Inc.
_MIPS_SI_OS_PROVIDER
Example: Silicon Graphics, Inc.
_MIPS_SI_OS_NAME
Example: IRIX
_MIPS_SI_HW_NAME
Example: IP12
_MIPS_SI_NUM_PROCESSORS
_MIPS_SI_AVAIL_PROCESSORS
request should be used in
place of this request as it
provides an unambiguous report on the number of processors available
for assignment.
_MIPS_SI_HOSTID
Example: c052d008
_MIPS_SI_OSREL_MAJ
_MIPS_SI_OSREL_MIN
_MIPS_SI_OSREL_PATCH
Release patch (5.1.1) is an example:
_MIPS_SI_OSREL_MAJ: 5
_MIPS_SI_OSREL_MIN: .1.1
_MIPS_SI_OSREL_PATCH 0
_MIPS_SI_PROCESSORS
_MIPS_SI_NUM_PROCESSORS
entries.
0 R2000 1 R2000 2 R3000A 3 R6000 4 R4000, R4400 6 R6000A 0x09 R10000 (T5) 0x0A R4200 0x0B R4300 0x10 R8000 0x20 R4600Example:
R2000A/R3000 3.0
For the R4400, the chip's "rev" register is 40 so that the imp/rev pair reads 0x440, while for the R4000 it reads 0x400.
_MIPS_SI_AVAIL_PROCESSORS
_MIPS_SI_AVAIL_PROCESSORS
will be equal to
_MIPS_SI_NUM_PROCESSORS
,
but some system implementations
may permit processors to be dedicated to specific tasks such as a
real-time environment, and they would be unavailable for general
purpose assignment. In such a case _MIPS_SI_AVAILABLE_PROCESSORS
would be less than
_MIPS_SI_NUM_PROCESSORS
. In no case shall _MIPS_SI_AVAILABLE_PROCESSORS
the OS return a value for is larger than _MIPS_SI_NUM_PROCESSORS
.
ioctl
Calls
As these specifications were discussed, some fundamental
inconsistencies were discovered among the existing
implementations of the tape manipulation ioctl
's. Because each vendor
must retain binary compatibility for their own software, new
values have been established for these interfaces, rather
than reusing existing values.
The header file <sys/mtio.h> (described in the Systems V Interface Definition, Third Edition, but not formally part of the generic ABI) shall include the following additional definitions.
struct abi_mdata { short mt_op; /* Operation, see below */ long mt_cnt; /* Operation count */ unsigned short mt_sts; /* Returned status, see below */ long reserved1; long reserved2; long reserved3; }; #define ABI_MTWEOF 0 /* Write tape mark */ #define ABI_MTFSF 1 /* Forward space file */ #define ABI_MTBSF 2 /* Backward space file */ #define ABI_MTFSR 3 /* Forward space record */ #define ABI_MTBSR 4 /* Backward space record */ #define ABI_MTREW 5 /* Rewind */ #define ABI_MTOFFL 6 /* Rewind or Rewind and Unload */
ABI_MTIOCTOP
is equivalent to the hex value 0x7409.
The value of the element on return is specific to different tape devices and some implementations may not modify this element.
The fields reserved1, reserved2 and reserved3 are included for compatibility.
ABI_MTWEOF
read
function call will return a value of zero. Fields
used in abi_mdata are:
Name Input or Output Description --------------------------------------------- mt_sts Output Resulting status.
ABI_MTFSF
Name Input or Output Description -------------------------------------------------------------- mt_cnt Input Number of file marks to space forward mt_sts Output Resulting status.
ABI_MTBSF
Name Input or Output Description --------------------------------------------------------------- mt_cnt Input Number of file marks to space backward. mt_sts Output Resulting status.This command may be unsupported on some tape devices.
ABI_MTFSR
Name Input or Output Description ------------------------------------------------------------ mt_cnt Input Number of records to space forward. mt_sts Output Resulting status.
ABI_MTBSR
ABI_MTFSR
command
except that the direction of tape movement is reversed. The
use of fields is identical.
Name Input or Output Description --------------------------------------------------------------- mt_cnt Input Number of records to space forward mt_sts Output Resulting status.This command may be unsupported on some tape devices.
ABI_MTREW
Name Input or Output Description ---------------------------------------------- mt_sts Output Resulting status.
ABI_MTOFFL
ABI_MTREW
. Fields
used in are:
Name Input or Output Description ---------------------------------------------- mt_sts Output Resulting status.
ioctl
calls. The physical data on tapes varies between
different device types and between driver implementations,
but there is a consistent interpretation of the logical
sequence of information on a tape as seen with the read
function.
Assume the following logical information on a tape, with the
beginning of tape to the left and the end of the tape to the
right and positions labeled 0 through 5.
(data1) (data2) (FM1) (data3) (FM2) (EOD) ^ ^ ^ ^ ^ ^ |0 |1 |2 |3 |4 |5
Sequential single-block read
calls from the beginning of the tape
in this example will return (data1), (data2), end-of-file
(indicated by a return value of zero), (data 3), end-of-file
and end-of-data. The data blocks in this example are all
the same size. Detection of end-of-data on the tape is
indicated by a with a return value of zero, followed by a
read
which returns zero or an error indication with
errno set to ENOSPC
.
Each position is such that if a read
is performed, the block
beginning at that position will be read, i.e. if the tape is
at position 1, a read
will return the contents of block "data2".
The following table summarizes the final position of the
tape head when various commands are performed with the tape
head at a given starting position, a value of mt_cnt of one and
with successful (no error) completion of the ioctl
call:
ioctl
Operations
Starting Command
Position FSF BSF FSR BSR read
0 3 - 1 - 1
1 3 - 2 0 2
2 3 - - 1 3 w/EOF indication
3 5 - 4 - 4
4 5 2 - 3 5 w/EOF indication
5 - 4 - - undefined
read
indicated above is for the size of one data block. The
EOF indication for read
is a return value of zero.
Items in the table indicated by a hyphen result in a tape
position which is not defined by the ABI. It is
implementation-dependent whether an error condition is
reported by the ioctl
call.
If the last operation was to write data, a file mark followed by an end-of-data indication will be written. The applies whether the device was opened with rewind access or no-rewind access. The tape position after closing on devices opened with no-rewind access will be after the file mark.
close
for device openedLast Operation Action After close -------------------------------------------------------------------------- write Write EOF and EOD, position before EOD read which returned EOD indication Position after EOF ioctl(ABI_MTWEOF) Position after EOF ioctl(ABI_MTFSF) Leaves positioned after EOF All others Undefined
write
write
function will
be written starting at the first data block or file mark
following the current tape position. The effect on data
following the written data is undefined and may not be
retrievable by subsequent tape positioning and read
functions.
If the tape has just been positioned to the point after a file mark, writing to the tape will start a new tape file even if the file mark is the last one prior to the end-of- data. This allows new tape files to be added to the end of the previous data.
errno
to error codes defined in
< errno.h>.
The
values returned in the mt_sys element of the abi_mdata
structure are device-specific and should only be used for display purposes.
Reading an end-of-file causes a return value of zero from
the read
call. If the file mark read is the last one on the
tape, a subsequent read
will return either zero or an error
indication with errno set to ENOSPC
The libdl
library allows users to dynamically link
shared libraries after a program is launched. The library
contains the following entry points.
dlopen dlclose dlsym dlerror
Shared libraries are accessed with dlopen
and
released with dlclose
. Symbols in shared libraries
opened via dlopen
can be located by calling
dlsym
. libdl
is implemented as a shared library,
linked on the command line using
void *dlopen(char *pathname, int mode); This routine makes a shared object available to a running process. It returns a handle for future and calls. int dlclose(void *handle); Disassociates a shared object previously opened by from the current process. void *dlsym(void *handle, char *name); Allows a process to obtain the address of a symbol defined within a shared object previously opened by char *dlerror(void); Returns a formatted character string describing the last error that occurred during dynamic linking processing.
dlopen
looks for entries in the
.dynamic
section of the shared library it opens and,
for each entry, invokes dlopen
on the shared
library entry names. This process recurses until all
libraries specified by entries have been loaded. In no
case will the dynamic linker link in a shared library
twice.
dlopen
are directly available only to
those other objects that were loaded as a result of the
same call to dlopen
. If the value
RTLD_GLOBAL
(which is defined to be 4) is or'ed with
the argument, the exported symbols of all objects
loaded via this call to dlopen
are directly
available to all other dlopen
'd objects. This
behavior is part of the behavior specified in a future
edition of the generic ABI (the 3rd edition).
dlclose
unmaps the shared library associated
with the handle passed to it and any other libraries
that were linked via the recursive process described
above. It guarantees that a library is not unlinked
until all the references to it are closed.
dlsym
restricts its search to the shared
libraries linked by the dlopen
that created its
handle. The search looks first in the shared library
referenced by the handle and then recursively traverses
libraries named in entries in a breadth-first order.
dlerror
returns an English message; it is not
internationalized.
The Networking Services library, libnsl
, contains
all the symbols listed in the generic ABI and MIPS processor
specific ABI, as well as the following symbols, which were
omitted from the base documents or were not fully defined.
The following routines are included in libnsl
to
correct oversights in the base documents.
nc_sperror* netdir_perror* netdir_sperror* xdr_u_int* xdrrec_endofrecord* xdrrec_skiprecord*
int _xstat(const int, const char *, struct stat *);
char *nc_sperror (void);
This routine is part of the network
selection feature. nc_sperror
is similar to
nc_perror
but instead of sending the message to the standard
error indicating why the network selection routines failed,
it returns a pointer to the message. nc_perror
returns NULL
if space cannot be allocated for the
message. As the data area for the message is dynamically
allocated, it must be freed when no longer needed.
endnetconfig
does this automatically.
void netdir_perror (char *);
netdir_perror
prints
an error message on the standard output stating why one of
the name-to-address mapping routines failed. The error
message is proceded by the string given as an argument.
char *netdir_sperror (void); Part of the generic interface
for name-to-address mapping. netdir_sperror
returns
a string containing an error message stating why one of the
name-to-address mapping routines failed.
bool_t xdr_u_int (XDR *, unsigned int *);
xdr_u_int
translates between C unsigned integers and their external
representations. This routine returns 1 if it succeeds, 0
otherwise.
bool_t xdrrec_endofrecord (XDR *, int now); This routine can
be invoked only on streams created by xdrrec_create
. The data in the output buffer is marked as a completed
record, and the output buffer is optionally written out if
now is non-zero. This routine returns 1 if it succeeds, 0
otherwise.
bool_t xdrrec_skiprecord (XDR *);
xdrrec_create
.
It tells the XDR implementation that the rest of the current
record in the stream's input buffer should be discarded.
This routine returns 1 if it succeeds, 0 otherwise.
_nderror* svc_fdset* t_errno* rpc_createerr*
*Symbol is new to version 1.2
The Mutual Exclusion Library, libmutex
, provides
ABI entry points for mutual exclusion.
init_lock acquire_lock release_lock spin_lock* stat_lock*Function is new to version 1.2
These functions supply a user-level interface to mutual exclusion. The
parameter lck
must point to memory shared by all processes
wishing to acquire or test the lock. The library routines might not
contain checks for the validity (e.g. non-null value) of the
lck
parameter. If only a single process will be using the
lock, lck
need not reside in shared memory.
libmutex
is provided as a shared library, linked on the
command line using -lmutex
. The header file
<abi_mutex.h> should be included.
int init_lock(abilock_t *lck);
init_lock
must
be called on a lock before any of the other functions.
It initializes the lock to an unlocked state. A non-
zero return status indicates an error.
int acquire_lock(abilock_t *lck); acquire_lock
tries once to acquire the lock referenced by
lck
. It returns zero if the lock was acquired,
otherwise non-zero.
int release_lock(abilock_t *lck);
release_lock
unconditionally releases the lock pointed to by
lck
. The ability for one process to release the lock
of another process is permitted. A non-zero return
status will indicate an error.
void spin_lock(abilock_t *lck);
spin_lock
tries
to acquire the lock referenced by lck
and does
not return until the lock is acquired.
int stat_lock(abilock_t *lck);
stat_lock
returns the current state of the lock referenced by
.CN lck
without attempting to acquire the lock. It
returns zero if the lock is free, otherwise non-zero.
The contents of the structure abilock_t
are defined in
<abi_mutex.h> as follows:
int init_lock(abilock_t *lck); int acquire_lock(abilock_t *lck); int release_lock(abilock_t *lck); void spin_lock(abilock_t *lck); int stat_lock(abilock_t *lck); typedef struct { unsigned long abi_lock; } abilock_t;
The user is responsible for implementing a back-off
policy if acquire_lock
returns failure.
Even though stat_lock
returns status indicating
that the lock is available, a call to
acquire_lock
could still fail.
Although the name spin_lock
implies that the
implementation must "busy wait" by repeatedly trying to
acquire the lock, this is not necessarily the best
implementation. OS developers are free to implement
more sophisticated schemes provided that the intended
semantics of the call are maintained.
libsocket
.so .
The socket library (-lsocket) must precede the
networking services library (-lnsl) in the cc
command line.
The behavior of a zero queue length (the
second argument) to the
libsocket
routine
listen
is undefined.
accept bind connect endhostent endnetent endprotoent endservent ether_aton ether_hostton ether_line ether_ntoa ether_ntohost gethostbyaddr gethostbyname gethostent getnetbyaddr getnetbyname getnetent getpeername getprotobyname getprotobynumber getprotoent getservbyname getservbyport getservent getsockname getsockopt htonl htons inet_addr inet_lnaof inet_makeaddr inet_netof inet_network inet_ntoa listen ntohl ntohs recv recvfrom recvmsg send sendmsg sendto sethostent setnetent setprotoent setservent setsockopt shutdown socket socketpair
The following system header files contain the data structures and manifest constants required for sockets.
#define IFF_UP 0x1 #define IFF_BROADCAST 0x2 #define IFF_DEBUG 0x4 #define IFF_LOOPBACK 0x8 #define IFF_POINTOPOINT 0x10 #define IFF_NOTRAILERS 0x20 #define IFF_RUNNING 0x40 #define IFF_NOARP 0x80 #define IFF_PROMISC 0x100 #define IFF_ALLMULTI 0x200 #define IFF_INTELLIGENT 0x400 #define IFF_MULTICAST 0x800 #define IFF_PRIVATE 0x8000 struct ifreq { #define IFNAMSIZ 16 char ifr_name[IFNAMSIZ]; union { struct sockaddr ifru_addr; struct sockaddr ifru_dstaddr; char ifru_oname[IFNAMSIZ]; struct sockaddr ifru_broadaddr; short ifru_flags; int ifru_metric; char ifru_data[1]; char ifru_enaddr[6]; } ifr_ifru; #define ifr_addr ifr_ifru.ifru_addr #define ifr_dstaddr ifr_ifru.ifru_dstaddr #define ifr_oname ifr_ifru.ifru_oname #define ifr_broadaddr ifr_ifru.ifru_broadaddr #define ifr_flags ifr_ifru.ifru_flags #define ifr_metric ifr_ifru.ifru_metric #define ifr_data ifr_ifru.ifru_data #define ifr_enaddr ifr_ifru.ifru_enaddr }; struct ifconf { int ifc_len; union { caddr_t ifcu_buf; struct ifreq *ifcu_req; } ifc_ifcu; #define ifc_buf ifc_ifcu.ifcu_buf #define ifc_req ifc_ifcu.ifcu_req };
struct arpreq { struct sockaddr arp_pa; struct sockaddr arp_ha; int arp_flags; }; #define ATF_INUSE 0x01 #define ATF_COM 0x02 #define ATF_PERM 0x04 #define ATF_PUBL 0x08 #define ATF_USETRAILERS 0x10
typedef u_char ether_addr_t[6];
#define ntohl(x) (x) #define ntohs(x) (x) #define htonl(x) (x) #define htons(x) (x) struct in_addr { u_long s_addr; }; #define INADDR_ANY (u_long)0x00000000 struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; }; #define IPPROTO_IP 0 #define IPPROTO_ICMP 1 #define IPPROTO_IGMP 2 #define IPPROTO_GGP 3 #define IPPROTO_TCP 6 #define IPPROTO_EGP 8 #define IPPROTO_PUP 12 #define IPPROTO_UDP 17 #define IPPROTO_IDP 22 #define IPPROTO_HELLO 63 #define IPPROTO_ND 77 #define IPPROTO_RAW 255 #define IPPROTO_MAX 256 #define IP_OPTIONS 1 #define IP_MULTICAST_IF 2 /* may not be supported */ #define IP_MULTICAST_TTL 3 /* may not be supported */ #define IP_MULTICAST_LOOP 4 /* may not be supported */ #define IP_ADD_MEMBERSHIP 5 /* may not be supported */ #define IP_DROP_MEMBERSHIP 6 /* may not be supported */ #define IP_HDRINCL 7 /* may not be supported */ #define IP_TOS 8 /* may not be supported */ #define IP_TTL 9 /* may not be supported */ #define IP_RECVOPTS 10 /* may not be supported */ #define IP_RECVRETOPTS 11 /* may not be supported */ #define IP_RECVDSTADDR 12 /* may not be supported */ #define IP_RETOPTS 13 /* may not be supported */
#define TCP_NODELAY 0x01 #define TCP_MAXSEG 0x02
#define IOCPARM_MASK 0xff #define IOC_VOID 0x20000000 #define IOC_OUT 0x40000000 #define IOC_IN 0x80000000 #define IOC_INOUT (IOC_IN|IOC_OUT) #define _IO(x,y) (IOC_VOID|(x<<8)|y) #define _IOR(x,y,t) (IOC_OUT|((((int)sizeof(t)) \ &IOCPARM_MASK)<<16)|(x<<8)|y) #define _IORN(x,y,t) (IOC_OUT|(((t) \ &IOCPARM_MASK)<<16)|(x<<8)|y) #define _IOW(x,y,t) (IOC_IN|((((int)sizeof(t)) \ &IOCPARM_MASK)<<16)|(x<<8)|y) #define _IOWN(x,y,t) (IOC_IN|(((t) \ &IOCPARM_MASK)<<16)|(x<<8)|y) #define _IOWR(x,y,t) (IOC_INOUT|((((int)sizeof(t)) \ &IOCPARM_MASK)<<16)|(x<<8)|y) #define SIOCSHIWAT _IOW('s', 0, int) #define SIOCGHIWAT _IOR('s', 1, int) #define SIOCSLOWAT _IOW('s', 2, int) #define SIOCGLOWAT _IOR('s', 3, int) #define SIOCATMARK _IOR('s', 7, int) #define SIOCSPGRP _IOW('s', 8, int) #define SIOCGPGRP _IOR('s', 9, int) #define SIOCADDRT _IOW('r', 10, struct rtentry) #define SIOCDELRT _IOW('r', 11, struct rtentry) #define SIOCSIFADDR _IOW('i', 12, struct ifreq) #define SIOCGIFADDR _IOWR('i',13, struct ifreq) #define SIOCSIFDSTADDR _IOW('i', 14, struct ifreq) #define SIOCGIFDSTADDR _IOWR('i',15, struct ifreq) #define SIOCSIFFLAGS _IOW('i', 16, struct ifreq) #define SIOCGIFFLAGS _IOWR('i',17, struct ifreq) #define SIOCSIFMEM _IOW('i', 18, struct ifreq) #define SIOCGIFMEM _IOWR('i',19, struct ifreq) #define SIOCGIFCONF _IOWR('i',20, struct ifconf) #define SIOCSIFMTU _IOW('i', 21, struct ifreq) #define SIOCGIFMTU _IOWR('i',22, struct ifreq) #define SIOCGIFBRDADDR _IOWR('i',23, struct ifreq) #define SIOCSIFBRDADDR _IOW('i',24, struct ifreq) #define SIOCGIFNETMASK _IOWR('i',25, struct ifreq) #define SIOCSIFNETMASK _IOW('i',26, struct ifreq) #define SIOCGIFMETRIC _IOWR('i',27, struct ifreq) #define SIOCSIFMETRIC _IOW('i',28, struct ifreq) #define SIOCSARP _IOW('i', 30, struct arpreq) #define SIOCGARP _IOWR('i',31, struct arpreq) #define SIOCDARP _IOW('i', 32, struct arpreq) #define SIOCUPPER _IOW('i', 40, struct ifreq) #define SIOCLOWER _IOW('i', 41, struct ifreq) #define SIOCSETSYNC _IOW('i', 44, struct ifreq) #define SIOCGETSYNC _IOWR('i', 45, struct ifreq) #define SIOCSSDSTATS _IOWR('i', 46, struct ifreq) #define SIOCSSESTATS _IOWR('i', 47, struct ifreq) #define SIOCSPROMISC _IOW('i', 48, int) #define SIOCADDMULTI _IOW('i', 49, struct ifreq) #define SIOCDELMULTI _IOW('i', 50, struct ifreq) #define SIOCPROTO _IOW('s', 51, struct socknewproto) #define SIOCGETNAME _IOR('s', 52, struct sockaddr) #define SIOCGETPEER _IOR('s', 53, struct sockaddr) #define IF_UNITSEL _IOW('s', 54, int) #define SIOCXPROTO _IO('s', 55) #define SIOCIFDETACH _IOW('i', 56, struct ifreq) #define SIOCGENPSTATS _IOWR('i', 57, struct ifreq) #define SIOCX25XMT _IOWR('i', 59, struct ifreq) #define SIOCX25RCV _IOWR('i', 60, struct ifreq) #define SIOCX25TBL _IOWR('i', 61, struct ifreq) #define SIOCSLGETREQ _IOWR('i', 71, struct ifreq) #define SIOCSLSTAT _IOW('i', 72, struct ifreq) #define SIOCSIFNAME _IOW('i', 73, struct ifreq) #define SIOCGENADDR _IOWR('i', 85, struct ifreq) #define SIOCSOCKSYS _IOW('i', 86, struct socksysreq)
struct hostent { char *h_name; char **h_aliases; int h_addrtype; int h_length; char **h_addr_list; #define h_addr h_addr_list[0] }; struct netent { char *n_name; char **n_aliases; int n_addrtype; unsigned long n_net; }; struct protoent { char *p_name; char **p_aliases; int p_proto; }; struct servent { char *s_name; char **s_aliases; int s_port; char *s_proto; };
struct rtentry { u_long rt_hash; struct sockaddr rt_dst; struct sockaddr rt_gateway; short rt_flags; short rt_refcnt; u_long rt_use; union { struct ip_provider *rtu_prov; struct ifnet *rtu_ifp; } rt_u; #define rt_prov rt_u.rtu_prov #define rt_ifp rt_u.rtu_ifp }; #define RTF_UP 0x1 #define RTF_GATEWAY 0x2 #define RTF_HOST 0x4 #define RTF_REINSTATE 0x8 #define RTF_DYNAMIC 0x10 #define RTF_MODIFIED 0x20 #define RTF_SWITCHED 0x40 #define RTF_SLAVE 0x80 #define RTF_REMOTE 0x100 #define RTF_TOSWITCH 0x200
#define AF_UNSPEC 0 #define AF_UNIX 1 #define AF_INET 2 #define AF_IMPLINK 3 #define AF_PUP 4 #define AF_CHAOS 5 #define AF_NS 6 #define AF_NBS 7 #define AF_ECMA 8 #define AF_DATAKIT 9 #define AF_CCITT 10 #define AF_SNA 11 #define AF_DECnet 12 #define AF_DLI 13 #define AF_LAT 14 #define AF_HYLINK 15 #define AF_APPLETALK 16 #define AF_NIT 17 #define AF_802 18 #define AF_OSI 19 #define AF_X25 20 #define AF_OSINET 21 #define AF_GOSIP 22 struct sockaddr { u_short sa_family; char sa_data[14]; }; #define SO_DEBUG 0x0001 #define SO_ACCEPTCONN 0x0002 #define SO_REUSEADDR 0x0004 #define SO_KEEPALIVE 0x0008 #define SO_DONTROUTE 0x0010 #define SO_BROADCAST 0x0020 #define SO_USELOOPBACK 0x0040 #define SO_LINGER 0x0080 #define SO_OOBINLINE 0x0100 #define SO_IMASOCKET 0x0400 #define SOL_SOCKET 0xffff struct linger { int l_onoff; int l_linger; }; #define SOCK_DGRAM 1 #define SOCK_STREAM 2 #define SOCK_RAW 4 #define SOCK_RDM 5 #define SOCK_SEQPACKET 6 #define PF_UNSPEC AF_UNSPEC #define PF_UNIX AF_UNIX #define PF_INET AF_INET #define PF_IMPLINK AF_IMPLINK #define PF_PUP AF_PUP #define PF_CHAOS AF_CHAOS #define PF_NS AF_NS #define PF_NBS AF_NBS #define PF_ECMA AF_ECMA #define PF_DATAKIT AF_DATAKIT #define PF_CCITT AF_CCITT #define PF_SNA AF_SNA #define PF_DECnet AF_DECnet #define PF_DLI AF_DLI #define PF_LAT AF_LAT #define PF_HYLINK AF_HYLINK #define PF_APPLETALK AF_APPLETALK #define PF_NIT AF_NIT #define PF_802 AF_802 #define PF_OSI AF_OSI #define PF_X25 AF_X25 #define PF_OSINET AF_OSINET #define PF_GOSIP AF_GOSIP struct msghdr { caddr_t msg_name; int msg_namelen; struct iovec *msg_iov; int msg_iovlen; caddr_t msg_accrights; int msg_accrightslen; }; #define MSG_OOB 0x1 #define MSG_PEEK 0x2 #define MSG_DONTROUTE 0x4 struct socknewproto { int family; int type; int proto; dev_t dev; int flags; }; struct socksysreq { int args[7]; };
#ifndef FD_SETSIZE #define FD_SETSIZE 1024 #endif #ifndef NBBY #define NBBY 8 #endif typedef long fd_mask; #define NFDBITS (sizeof(fd_mask) * NBBY) #ifndef howmany #define howmany(x, y) (((x)+((y)-1))/(y)) #endif typedef struct fd_set { fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)]; } fd_set; #define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] \ |= (1 << ((n) % NFDBITS))) #define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] \ &= ~(1 << ((n) % NFDBITS))) #define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] \ & (1 << ((n) % NFDBITS))) #define FD_ZERO(p) memset((char *)(p), 0, sizeof(*(p)))
struct sockaddr_un { short sun_family; char sun_path[108]; };
The library libabi.so.1
contains routines which
perform asynchronous I/O operations. These are based on the
asynchronous I/O routines documented in the POSIX 1003.1b
(Real-Time) standard, but using callback functions for
completion notification rather than real-time signals. This
allows for more flexible operation and, in some
implementations, increased performance. Since it is based on
the POSIX standard, that standard should be consulted in
concert with this one for full details.
aio_cancel* aio_error* aio_fsync* aio_hold* aio_read* aio_return* aio_suspend* aio_write* lio_listio*
These routines have the equivalent behavior, except for the
restrictions listed on page %restrictions%, to routines in the
POSIX 1003.1b specification. The aio_hold
routine
does not have a POSIX equivalent.
/* for aio_cancel() return values */ #define AIO_CANCELED 1 /* all operations canceled */ #define AIO_NOTCANCELED 2 /* some ops could not be canceled */ #define AIO_ALLDONE 3 /* no ops could be canceled, all done */ /* for aiocb.lio_opcode */ #define LIO_NOP 0 /* listio request with no data xfer */ #define LIO_READ 1 /* listio read request */ #define LIO_WRITE 2 /* listio write request */ /* for lio_listio mode flag */ #define LIO_WAIT 4 /* suspend until lio_listio complete */ #define LIO_NOWAIT 3 /* do not suspend or notify for lio_listio */ /* for aio_hold routine */ #define AIO_HOLD_CALLBACK 1 #define AIO_RELEASE_CALLBACK 2 #define AIO_ISHELD_CALLBACK 3 typedef struct aiocb { int aio_fildes; /* file descriptor */ volatile void *aio_buf; /* data buffer location */ size_t aio_nbytes; /* number bytes of data */ off_t aio_offset; /* file offset */ int aio_reqprio; /* request priority */ struct sigevent aio_sigevent; /* notification method */ int aio_lio_opcode; /* listio operation */ ulong aio_reserved[7]; /* reserved for internal use */ ulong aio_pad[6]; } aiocb_t; /* prototypes */ int aio_read(aiocb_t *); int aio_write(aiocb_t *); int lio_listio(int, aiocb_t * const [], int, sigevent_t *); int aio_error(const aiocb_t *); int aio_return(aiocb_t *); int aio_cancel(int, aiocb_t *); int aio_suspend(const aiocb_t * const [], int, const struct timespec *); int aio_fsync(int op, aiocb_t *); int aio_hold(int);
typedef union { int nisigno; /* signal number */ void (*nifunc)(union sigval); /* callback data */ } notifyinfo_t; typedef union sigval { int sival_int; /* integer notify value */ void *sival_ptr; /* pointer notify value */ } sigval_t; typedef struct sigevent { int sigev_notify; /* notification type */ notifyinfo_t sigev_notifyinfo; /* notification info */ sigval_t sigev_value; /* notification handler argument */ ulong sigev_reserved[13]; /* reserved for internal use */ ulong sigev_pad[6]; /* reserved for future use */ } sigevent_t; #define sigev_func sigev_notifyinfo.nifunc #define sigev_signo sigev_notifyinfo.nisigno /* values of sigev_notify */ #define SIGEV_NONE 128 /* no async notification */ #define SIGEV_SIGNAL 129 /* queued signal notification NOT SUPPORTED for MIPS ABI */ #define SIGEV_CALLBACK 130 /* callback notification */
#define _POSIX_AIO_LISTIO_MAX 2 #define _POSIX_AIO_MAX 1 #define _ABI_AIO_XFER_MAX (128*1024) /* minimum max value */
#define EINPROGRESS 150 #define ECANCELED 158
#define _SC_ASYNCHRONOUS_IO 64 /* is POSIX AIO supported? */ #define _SC_ABI_ASYNCHRONOUS_IO 65 /* is ABI AIO supported? */ #define _SC_AIO_LISTIO_MAX 66 /* max listio operation */ #define _SC_AIO_MAX 67 /* max AIO */ #define _PC_ASYNC_IO 64 /* can this file do POSIX AIO? */ #define _PC_ABI_ASYNC_IO 65 /* can this file do ABI AIO? */ #define _PC_ABI_AIO_XFER_MAX 66 /* biggest ABI AIO xfer for this file */
_SC_ASYNCHRONOUS
and _PC_ASYNCIO
are included
for completeness, for checking for strict POSIX conformance. An
ABI-conforming application would not query for POSIX, but rather for
the ABI values.
aio_hold
are those of the corresponding POSIX 1003.1b
definition with the substitution of callback functions for notification
by real-time signals. In addition to the specified error returns, the
functions which correspond to POSIX 1003.1b functions can also set to
the following value:
EBADF
int aio_read(aiocb_t *aiocbp)
int aio_write(aiocb_t *aiocbp)
int lio_listio(int mode, aiocb_t * const list[], int nent, sigevent_t *sig)
int aio_error(const aiocb_t *aiocbp)
int aio_return(aiocb_t *aiocbp)
int aio_cancel(int fildes, aiocb_t *aiocbp)
int aio_suspend(const aiocb_t * const list[], int nent,i const struct timespec *timeout)
int aio_fsync(int op, aiocb_t *iocbp)
int aio_hold(int should_hold)
AIO_HOLD_CALLBACK
,
callbacks will be deferred; if AIO_RELEASE_CALLBACK
,
callback invocation will resume. aio_hold
counts calls,
and only when the count of AIO_HOLD_CALLBACK
calls reaches
zero via a corresponding number of AIO_RELEASE_CALLBACK
calls will callbacks be released. Upon successful completion, the
state prior to the call is returned. A return value of 1 indicates
there were one or more hold calls, a value of 0 indicates callbacks
were not being held. Otherwise, a value of -1 is returned and
errnois set to indicate the error. aio_hold
can
also be called with a parameter of AIO_ISHELD_CALLBACK
which will query the current state; it returns 1 if callbacks are
currently held, 0 otherwise. When a callback routine is called,
callbacks are automatically held.
aio_hold
will fail if one or more of the
following are true:
EINVAL
AIO_ISHELP_CALLBACK
, AIO_HOLDCALL_BACK
or AIO_RELEASE_CALLBACK
ENOSYS
EIO
XActivateScreenSaver XAddExtension XAddHost XAddHosts XAddPixel XAddToExtensionList XAddToSaveSet XAllocClassHint XAllocColor XAllocColorCells XAllocColorPlanes XAllocIconSize XAllocNamedColor XAllocSizeHints XAllocStandardColormap XAllocWMHints XAllowEvents XAllPlanes XAutoRepeatOff XAutoRepeatOn XBaseFontNameListOfFontSet XBell XBitmapBitOrder XBitmapPad XBitmapUnit XBlackPixel XBlackPixelOfScreen XCellsOfScreen XChangeActivePointerGrab XChangeGC XChangeKeyboardControl XChangeKeyboardMapping XChangePointerControl XChangeProperty XChangeSaveSet XChangeWindowAttributes XCheckIfEvent XCheckMaskEvent XCheckTypedEvent XCheckTypedWindowEvent XCheckWindowEvent XCirculateSubwindows XCirculateSubwindowsDown XCirculateSubwindowsUp XClearArea XClearWindow XClipBox XCloseDisplay XCloseIM XcmsAddColorSpace XcmsAddFunctionSet XcmsAllocColor XcmsAllocNamedColor XcmsCCCOfColormap XcmsCIELabClipab XcmsCIELabClipL XcmsCIELabClipLab XcmsCIELabQueryMaxC XcmsCIELabQueryMaxL XcmsCIELabQueryMaxLC XcmsCIELabQueryMinL XcmsCIELabToCIEXYZ XcmsCIELabWhiteShiftColors XcmsCIELuvClipL XcmsCIELuvClipLuv XcmsCIELuvClipuv XcmsCIELuvQueryMaxC XcmsCIELuvQueryMaxL XcmsCIELuvQueryMaxLC XcmsCIELuvQueryMinL XcmsCIELuvToCIEuvY XcmsCIELuvWhiteShiftColors XcmsCIEuvYToCIELuv XcmsCIEuvYToCIEXYZ XcmsCIEuvYToTekHVC XcmsCIExyYToCIEXYZ XcmsCIEXYZToCIELab XcmsCIEXYZToCIEuvY XcmsCIEXYZToCIExyY XcmsCIEXYZToRGBi XcmsClientWhitePointOfCCC XcmsConvertColors XcmsCreateCCC XcmsDefaultCCC XcmsDisplayOfCCC XcmsFormatOfPrefix XcmsFreeCCC XcmsLookupColor XcmsPrefixOfFormat XcmsQueryBlack XcmsQueryBlue XcmsQueryColor XcmsQueryColors XcmsQueryGreen XcmsQueryRed XcmsQueryWhite XcmsRGBiToCIEXYZ XcmsRGBiToRGB XcmsRGBToRGBi XcmsScreenNumberOfCCC XcmsScreenWhitePointOfCCC XcmsSetCCCOfColormap XcmsSetCompressionProc XcmsSetWhiteAdjustProc XcmsSetWhitePoint XcmsStoreColor XcmsStoreColors XcmsTekHVCClipC XcmsTekHVCClipV XcmsTekHVCClipVC XcmsTekHVCQueryMaxC XcmsTekHVCQueryMaxV XcmsTekHVCQueryMaxVC XcmsTekHVCQueryMaxVSamples XcmsTekHVCQueryMinV XcmsTekHVCToCIEuvY XcmsTekHVCWhiteShiftColors XcmsVisualOfCCC XConfigureWindow XConnectionNumber XContextDependentDrawing XConvertSelection XCopyArea XCopyColormapAndFree XCopyGC XCopyPlane XCreateBitmapFromData XCreateColormap XCreateFontCursor XCreateFontSet XCreateGC XCreateGlyphCursor XCreateIC XCreateImage XCreatePixmap XCreatePixmapCursor XCreatePixmapFromBitmapData XCreateRegion XCreateSimpleWindow XCreateWindow XDefaultColormap XDefaultColormapOfScreen XDefaultDepth XDefaultDepthOfScreen XDefaultGC XDefaultGCOfScreen XDefaultRootWindow XDefaultScreen XDefaultScreenOfDisplay XDefaultString XDefaultVisual XDefaultVisualOfScreen XDefineCursor XDeleteContext XDeleteModifiermapEntry XDeleteProperty XDestroyIC XDestroyImage XDestroyRegion XDestroySubwindows XDestroyWindow XDisableAccessControl XDisplayCells XDisplayHeight XDisplayHeightMM XDisplayKeycodes XDisplayMotionBufferSize XDisplayName XDisplayOfIM XDisplayOfScreen XDisplayPlanes XDisplayString XDisplayWidth XDisplayWidthMM XDoesBackingStore XDoesSaveUnders XDrawArc XDrawArcs XDrawImageString XDrawImageString16 XDrawLine XDrawLines XDrawPoint XDrawPoints XDrawRectangle XDrawRectangles XDrawSegments XDrawString XDrawString16 XDrawText XDrawText16 XEHeadOfExtensionList XEmptyRegion XEnableAccessControl XEqualRegion XESetCloseDisplay XESetCopyGC XESetCreateFont XESetCreateGC XESetError XESetErrorString XESetEventToWire XESetFlushGC XESetFreeFont XESetFreeGC XESetPrintErrorValues XESetWireToError XESetWireToEvent XEventMaskOfScreen XEventsQueued XExtentsOfFontSet XFetchBuffer XFetchBytes XFetchName XFillArc XFillArcs XFillPolygon XFillRectangle XFillRectangles XFilterEvent XFindContext XFindOnExtensionList XFlush XFlushGC XFontsOfFontSet XForceScreenSaver XFree XFreeColormap XFreeColors XFreeCursor XFreeExtensionList XFreeFont XFreeFontInfo XFreeFontNames XFreeFontPath XFreeFontSet XFreeGC XFreeModifiermap XFreePixmap XFreeStringList XGContextFromGC XGeometry XGetAtomName XGetClassHint XGetCommand XGetDefault XGetErrorDatabaseText XGetErrorText XGetFontPath XGetFontProperty XGetGCValues XGetGeometry XGetIconName XGetIconSizes XGetICValues XGetImage XGetIMValues XGetInputFocus XGetKeyboardControl XGetKeyboardMapping XGetModifierMapping XGetMotionEvents XGetNormalHints XGetPixel XGetPointerControl XGetPointerMapping XGetRGBColormaps XGetScreenSaver XGetSelectionOwner XGetSizeHints XGetStandardColormap XGetSubImage XGetTextProperty XGetTransientForHint XGetVisualInfo XGetWindowAttributes XGetWindowProperty XGetWMClientMachine XGetWMColormapWindows XGetWMHints XGetWMIconName XGetWMName XGetWMNormalHints XGetWMProtocols XGetWMSizeHints XGetZoomHints XGrabButton XGrabKey XGrabKeyboard XGrabPointer XGrabServer XHeightMMOfScreen XHeightOfScreen XIconifyWindow XIfEvent XImageByteOrder XIMOfIC XInitExtension XInsertModifiermapEntry XInstallColormap XInternAtom XIntersectRegion XKeycodeToKeysym XKeysymToKeycode XKeysymToString XKillClient XLastKnownRequestProcessed XListDepths XListExtensions XListFonts XListFontsWithInfo XListHosts XListInstalledColormaps XListPixmapFormats XListProperties XLoadFont XLoadQueryFont XLocaleOfFontSet XLocaleOfIM XLookupColor XLookupKeysym XLookupString XLowerWindow XMapRaised XMapSubwindows XMapWindow XMaskEvent XMatchVisualInfo XMaxCmapsOfScreen XMaxRequestSize XmbDrawImageString XmbDrawString XmbDrawText XmbLookupString XmbResetIC XmbSetWMProperties XmbTextEscapement XmbTextExtents XmbTextListToTextProperty XmbTextPerCharExtents XmbTextPropertyToTextList XMinCmapsOfScreen XMoveResizeWindow XMoveWindow XNewModifiermap XNextEvent XNextRequest XNoOp XOffsetRegion XOpenDisplay XOpenIM XParseColor XParseGeometry XPeekEvent XPeekIfEvent XPending Xpermalloc XPlanesOfScreen XPointInRegion XPolygonRegion XProtocolRevision XProtocolVersion XPutBackEvent XPutImage XPutPixel XQLength XQueryBestCursor XQueryBestSize XQueryBestStipple XQueryBestTile XQueryColor XQueryColors XQueryExtension XQueryFont XQueryKeymap XQueryPointer XQueryTextExtents XQueryTextExtents16 XQueryTree XRaiseWindow XReadBitmapFile XRebindKeysym XRecolorCursor XReconfigureWMWindow XRectInRegion XRefreshKeyboardMapping XRemoveFromSaveSet XRemoveHost XRemoveHosts XReparentWindow XResetScreenSaver XResizeWindow XResourceManagerString XRestackWindows XrmCombineDatabase XrmCombineFileDatabase XrmDestroyDatabase XrmEnumerateDatabase XrmGetDatabase XrmGetFileDatabase XrmGetResource XrmGetStringDatabase XrmInitialize XrmLocaleOfDatabase XrmMergeDatabases XrmParseCommand XrmPermStringToQuark XrmPutFileDatabase XrmPutLineResource XrmPutResource XrmPutStringResource XrmQGetResource XrmQGetSearchList XrmQGetSearchResource XrmQPutResource XrmQPutStringResource XrmQuarkToString XrmSetDatabase XrmStringToBindingQuarkList XrmStringToQuark XrmStringToQuarkList XrmUniqueQuark XRootWindow XRootWindowOfScreen XRotateBuffers XRotateWindowProperties XSaveContext XScreenCount XScreenNumberOfScreen XScreenOfDisplay XScreenResourceString XSelectInput XSendEvent XServerVendor XSetAccessControl XSetAfterFunction XSetArcMode XSetBackground XSetClassHint XSetClipMask XSetClipOrigin XSetClipRectangles XSetCloseDownMode XSetCommand XSetDashes XSetErrorHandler XSetFillRule XSetFillStyle XSetFont XSetFontPath XSetForeground XSetFunction XSetGraphicsExposures XSetICFocus XSetIconName XSetIconSizes XSetICValues XSetInputFocus XSetIOErrorHandler XSetLineAttributes XSetLocaleModifiers XSetModifierMapping XSetNormalHints XSetPlaneMask XSetPointerMapping XSetRegion XSetRGBColormaps XSetScreenSaver XSetSelectionOwner XSetSizeHints XSetStandardColormap XSetStandardProperties XSetState XSetStipple XSetSubwindowMode XSetTextProperty XSetTile XSetTransientForHint XSetTSOrigin XSetWindowBackground XSetWindowBackgroundPixmap XSetWindowBorder XSetWindowBorderPixmap XSetWindowBorderWidth XSetWindowColormap XSetWMClientMachine XSetWMColormapWindows XSetWMHints XSetWMIconName XSetWMName XSetWMNormalHints XSetWMProperties XSetWMProtocols XSetWMSizeHints XSetZoomHints XShrinkRegion XStoreBuffer XStoreBytes XStoreColor XStoreColors XStoreName XStoreNamedColor XStringListToTextProperty XStringToKeysym XSubImage XSubtractRegion XSupportsLocale XSync XSynchronize XTextExtents XTextExtents16 XTextPropertyToStringList XTextWidth XTextWidth16 XTranslateCoordinates XUndefineCursor XUngrabButton XUngrabKey XUngrabKeyboard XUngrabPointer XUngrabServer XUninstallColormap XUnionRectWithRegion XUnionRegion XUnloadFont XUnmapSubwindows XUnmapWindow XUnsetICFocus XVaCreateNestedList XVendorRelease XVisualIDFromVisual XWarpPointer XwcDrawImageString XwcDrawString XwcDrawText XwcFreeStringList XwcLookupString XwcResetIC XwcTextEscapement XwcTextExtents XwcTextListToTextProperty XwcTextPerCharExtents XwcTextPropertyToTextList XWhitePixel XWhitePixelOfScreen XWidthMMOfScreen XWidthOfScreen XWindowEvent XWithdrawWindow XWMGeometry XWriteBitmapFile XXorRegion _XAllocScratch _XEatData _XFlush _XFlushGCCache _XRead _XReadEvents _XReadPad _XReply _XSend _XSetLastRequestRead
XcmsCIELabColorSpace XcmsCIELuvColorSpace XcmsCIEuvYColorSpace XcmsCIExyYColorSpace XcmsCIEXYZColorSpace XcmsLinearRGBFunctionSet XcmsRGBColorSpace XcmsRGBiColorSpace XcmsTekHVCColorSpace XcmsUNDEFINEDColorSpace
X11/cursorfont.h X11/keysymdef.h X11/X.h X11/Xatom.h X11/Xcms.h X11/Xlib.h X11/Xproto.h X11/Xresource.h X11/Xutil.h
X11/Intrinsic.h X11/IntrinsicP.h X11/Shell.h X11/ShellP.h X11/StringDefs.h X11/Vendor.h X11/VendorP.h
acos acosh asin asinh atan* atan2 atanh cbrt ceil cos cosh erf erfc exp fabs floor fmod gamma hypot* j0 j1 jn lgamma log log10 pow remainder sin sinh sqrt tan tanh y0 y1 yn
Xm/ArrowB.h Xm/ArrowBG.h Xm/BulletinB.h Xm/CascadeB.h Xm/CascadeBG.h Xm/Command.h Xm/CutPaste.h Xm/DialogS.h Xm/DrawingA.h Xm/DrawnB.h Xm/FileSB.h Xm/Form.h Xm/Frame.h Xm/Label.h Xm/LabelG.h Xm/List.h Xm/MainW.h Xm/MenuShell.h Xm/MessageB.h Xm/PanedW.h Xm/Protocols.h Xm/PushB.h Xm/PushBG.h Xm/RowColumn.h Xm/Scale.h Xm/ScrollBar.h Xm/ScrolledW.h Xm/SelectioB.h Xm/SeparatoG.h Xm/Separator.h Xm/Text.h Xm/ToggleB.h Xm/ToggleBG.h Xm/Xm.h Xm/XmP.h
basename bgets bufsplit copylist dirname eaccess gmatch isencrypt mkdirp p2open p2close pathfind regcmp regex rmdirp strcadd strccpy streadd strecpy strfind strrspn strtrns compile* step* advance*
char * basename(char *); char * bgets(char *, size_t, FILE *, char *); size_t bufsplit(char *, size_t, const char *); char * copylist(const char *, off_t *); char * dirname(char *); int eaccess(const char *, int); int gmatch(const char *, const char *); int isencrypt(const char *, size_t); int mkdirp(const char *, mode_t); int p2open(const char *, FILE *[2]); int p2close(FILE *[2]); char * pathfind(const char *, const char *, const char *); char * regcmp(const char *, ...); char * regex(const char *, const char *, ...); int rmdirp(char *, char *); char * strccpy(char *, const char *); char * strcadd(char *, const char *); char * strecpy(char *, const char *, const char *); char * streadd(char *, const char *, const char *); int strfind(const char *, const char *); char * strrspn(const char *, const char *); char * strtrns(const char *, const char *, const char *, char *);These functions are declared in and operate as described in the System V Interface Definition, Third Edition. Note that the description in the SVID refers to a different implementation, and refereneces a different header file, not the implementation. In any case, these routines are marked as level 2 and should be avoided, as they are not required to be present on an ABI-conforming system.
char * compile(const char *, char *, char *); int step(const char *, const char *); int advance(const char *, const char *);
alloca alphasort bcmp bcopy bzero dbm_close dbm_delete dbm_do_nextkey dbm_fetch dbm_firsthash dbm_firstkey dbm_forder dbm_nextkey dbm_open dbm_store dc endusershell fopen fp_accrued_exceptions fp_class_d fp_class_f fp_direction fp_precision fprintf ftime getdtablesize gethostid gethostname getpagesize getrusage getusershell getwd ieee_handlers index initstate isnan killpg longjmp mctl mkstemp printf psignal rand random re_comp re_exec readdir rindex scandir sethostname setjmp setstate setusershell sigblock sigfpe siginterrupt signal sigpause sigsetmask sigstack sigvec sleep sprintf srand srandom strcasecmp strncasecmp sys_siglist times timezone ualarm usleep utimes vfprintf vprintf vsprintf wait3
The BSD Emulation Library is at level 2,
and is likely to be removed in the next edition of this specification.
Go to Next Chapter (Chapter 7)
Go back to the Overview
Back to the Table of Contents
Back to the MIPS ABI Home Page
Copyright © 1995, MIPS ABI Group, Incorporated.